package com.lwlk.util.bit;

public class ByteUtil {

    public static boolean isZeroBit(byte b, int index) {

        return (b & (1 << index)) == 0;
    }

    public static boolean isNotZeroBit(byte b, int index) {

        return !isZeroBit(b, index);
    }

    public static short bytePairToShort(byte h, byte l) {

        return (short) ((Byte.toUnsignedInt(h) << 8) + Byte.toUnsignedInt(l));
    }

    public static int bytePairToInt(byte h, byte l) {

        return ((Byte.toUnsignedInt(h) << 8) + Byte.toUnsignedInt(l));
    }

    public static int bytePairToInt(byte hh, byte hl, byte lh, byte ll) {

        return byteArrayToInt(new byte[] { hh, hl, lh, ll });
    }

    public static int byteArrayToInt(byte[] bytes) {

        return (bytePairToInt(bytes[0], bytes[1]) << 16) + bytePairToInt(bytes[2], bytes[3]);
    }

    public static byte[] shortToBytes(short s) {

        return new byte[] { (byte) (s >>> 8), (byte) s };
    }

    public static byte[] intToBytes(int s) {

        return new byte[] { (byte) (s >>> 24), (byte) (s >>> 16), (byte) (s >>> 8), (byte) s };
    }
}
